from typing import Any

from core.tools.errors import ToolProviderCredentialValidationError
from core.tools.provider.builtin.novitaai.tools.novitaai_txt2img import NovitaAiTxt2ImgTool
from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController


class NovitaAIProvider(BuiltinToolProviderController):
    def _validate_credentials(self, credentials: dict[str, Any]) -> None:
        try:
            result = NovitaAiTxt2ImgTool().fork_tool_runtime(
                runtime={
                    "credentials": credentials,
                }
            ).invoke(
                user_id='',
                tool_parameters={
                    'model_name': 'cinenautXLATRUE_cinenautV10_392434.safetensors',
                    'prompt': 'a futuristic city with flying cars',
                    'negative_prompt': '',
                    'width': 128,
                    'height': 128,
                    'image_num': 1,
                    'guidance_scale': 7.5,
                    'seed': -1,
                    'steps': 1,
                },
            )
        except Exception as e:
            raise ToolProviderCredentialValidationError(str(e))
